package com.example.myweb.Repository.JpaRepository;

import com.example.myweb.Domain.Entity.Topic;
import org.springframework.data.domain.Pageable;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.query.Param;

import java.util.List;
import java.util.Optional;
import java.util.Set;

public interface TopicRepository extends JpaRepository<Topic, Long> {
    Optional<Topic> findByName(String name);
    Set<Topic> findByNameIn(List<String> names);
    /**
     * 查询热门话题，按 hotScore 降序排列
     * @param pageable 分页参数，用于限制返回数量 (例如 Top 10)
     * @return 热门话题列表
     */
    List<Topic> findByOrderByHotScoreDesc(Pageable pageable);
    /**
     * 根据关键词模糊搜索话题名称。
     * 使用JPQL的LOWER函数来忽略大小写。
     * @param keyword 搜索关键词
     * @param pageable 分页参数，用于限制返回结果的数量（比如最多返回10条建议）
     * @return 匹配的话题列表
     */
    @Query("SELECT t FROM Topic t WHERE LOWER(t.name) LIKE LOWER(CONCAT('%', :keyword, '%'))")
    List<Topic> searchByNameContainingIgnoreCase(@Param("keyword") String keyword, Pageable pageable);
}